home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.2 / IRIX 6.2 CD2.iso / dist / print.idb / usr / sbin / addclient.z / addclient
Text File  |  1996-06-10  |  2KB  |  105 lines

  1. #! /bin/sh
  2. #
  3. # Execute once per client on a host machine (i.e., the machine with the
  4. # physical printer attached.), or use the -a option to allow universal access.
  5. #
  6. # $Revision: 1.9 $
  7. # $Date: 1993/04/06 23:54:23 $
  8.  
  9. usage() {
  10.     echo "usage: addclient client_machine_name"
  11.     echo "   or  addclient -a"
  12.     exit 1
  13.     }
  14.  
  15. if [ ! -w /var/spool/lp ]
  16. then
  17.     if [ -r /var/spool/lp ]
  18.     then
  19.         echo "You must be logged in as root to use this program."
  20.         exit 1
  21.     else
  22.         echo "The lp spooling system is not installed on this machine."
  23.         exit 1
  24.     fi
  25. fi
  26.  
  27. ADDALL=0
  28.  
  29. while getopts a flag
  30. do
  31.     case $flag in
  32.         a)
  33.             ADDALL=1
  34.             ;;
  35.         \?)
  36.             usage
  37.             exit 1
  38.             ;;
  39.     esac
  40. done
  41.  
  42. shift `expr $OPTIND - 1`
  43.  
  44. cm=$1
  45.  
  46. if [ $ADDALL -eq 0 ]
  47. then
  48.     if [ -z "$cm" ]
  49.     then
  50.         usage
  51.     fi
  52.     # Make sure we use the proper name for the remote host, not an alias.
  53.     if chkconfig yp
  54.     then
  55.         set -- `ypmatch $cm hosts 2> /dev/null`
  56.     else
  57.         set -- `grep $cm /etc/hosts`
  58.     fi
  59.  
  60.     if [ -z "$2" ]
  61.     then
  62.         echo "Unknown host \"$cm\""
  63.         exit 1
  64.     fi
  65.  
  66.     if [ "$2" != "$cm" ]
  67.     then
  68.         echo "Using canonical name \"$2\" instead of alias \"$cm\"."
  69.         cm=$2
  70.     fi
  71. fi
  72.  
  73. # if there is no home dir for lp, give it one
  74. if grep -s '^lp:.*:/:$' /etc/passwd ; 
  75. then
  76. ed - /etc/passwd << '__JUNK__'
  77. /^lp:/s/:\/:/:\/usr\/spool\/lp:\/bin\/sh/
  78. w
  79. q
  80. __JUNK__
  81. fi
  82.  
  83. # get the current home directory of the lp user
  84. lpusr=`grep '^lp:' /etc/passwd | cut -d: -f6`
  85.  
  86. if [ $ADDALL -eq 1 ]
  87. then
  88.     echo "+\n+ root" > $lpusr/.rhosts
  89.     echo "All other hosts can now access printers on this machine."
  90. else
  91.     if grep -s $cm $lpusr/.rhosts ; then 
  92.         echo "$cm is already a client"
  93.     else
  94.         echo "$cm lp" >> $lpusr/.rhosts
  95.         echo "$cm root" >> $lpusr/.rhosts
  96.         echo Added \"$cm lp\" to "$lpusr/.rhosts"
  97.     fi
  98. fi
  99.  
  100. #
  101. # Make sure the permissions are correct on the .rhost file.
  102. chmod 600 $lpusr/.rhosts
  103. chown lp $lpusr/.rhosts
  104. chgrp lp $lpusr/.rhosts
  105.